# 导入Document类，用于创建带有元数据的文档对象
from llama_index.core import Document

# 导入SentenceSplitter类，用于将文档按句子分割为节点
from llama_index.core.node_parser import SentenceSplitter

# 创建一个包含丰富元数据的文档对象
document_with_metadata = Document(
    text="这是文档内容。包含重要信息。",  # 文档的正文内容
    metadata={  # 文档的元数据信息
        "source": "important_doc.txt",  # 来源文件名
        "category": "重要文档",  # 文档类别
        "priority": "高",  # 优先级
        "created_date": "2024-01-01",  # 创建日期
        "author": "张三",  # 作者
    },
)

# 创建句子分割器实例
splitter = SentenceSplitter()
# 使用分割器将文档分割成节点，每个节点会继承文档的元数据
nodes = splitter.get_nodes_from_documents([document_with_metadata])


# 遍历所有分割得到的节点
for i, node in enumerate(nodes, 1):
    # 打印每个节点的元数据
    print(f"节点 {i} 元数据: {node.metadata}")
    # 遍历原始文档的每一项元数据，验证节点是否继承
    for key, value in document_with_metadata.metadata.items():
        assert node.metadata[key] == value, f"元数据 {key} 不匹配"  # 若不匹配则抛出异常
    # 打印继承验证通过的信息
    print("✅ 元数据继承正确")
    print()
